package com.xyy.saas.payment.dao.mapper;

import com.xyy.saas.payment.dao.model.BankBillJd0028;
import com.xyy.saas.payment.dao.model.BankBillJd0028QueryParam;
import com.xyy.saas.payment.dto.BankBillJd0028Total;
import com.xyy.saas.payment.dto.ReconcileTradeDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * 新分账商户根据交易时间生成交易流水表-shareOrderCreate(BankBillJd0028)表数据库访问层
 *
 * @author chujian
 * @since 2023-06-13 15:06:34
 */
@Mapper
public interface BankBillJd0028Mapper {
    List<BankBillJd0028> queryIncompleteBill(@Param("billDate") Date billDate);
    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    BankBillJd0028 queryById(Long id);

    /**
     * 查询总数
     * @param param 查询条件
     * @return
     */
    long total(BankBillJd0028QueryParam param);

    /**
     * 查询指定行数据
     *
     * @param param 查询条件
     * @return 对象列表
     */
    List<BankBillJd0028> queryPage(BankBillJd0028QueryParam param);

    List<BankBillJd0028> queryPageV2(BankBillJd0028QueryParam param);

    List<BankBillJd0028> queryByPayNos(@Param("payNos") List<String> payNos);

    /**
     * 查询指定行数据
     *
     * @param param 查询条件
     * @return 对象列表
     */
    List<BankBillJd0028> queryExport(BankBillJd0028QueryParam param);

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<BankBillJd0028> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(List<Object> entities);
    int updateBatch(@Param("list")List<BankBillJd0028> entities);
    /**
     * 通过主键删除数据
     *
     * @param bankBillJd0028 实例对象
     * @return 影响行数
     */
    int delete(BankBillJd0028 bankBillJd0028);

    /**
     * 京东账单上报平安 - 汇总信息
     */
    List<BankBillJd0028Total> submitPinganTotal(@Param("merchantNo") String merchantNo, @Param("billDate") String billDate);

    /**
     * 京东账单上报平安 - 明细数据
     */
    List<BankBillJd0028> submitPinganDetail(@Param("merchantNo") String merchantNo, @Param("billDate") String billDate, @Param("id") Long id);

    List<BankBillJd0028> findJdSingleSidePayTrade(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime);

    List<BankBillJd0028> findJdSingleSideRefundTrade(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime);

    List<ReconcileTradeDto> findJdChannePayTradeErrorAmount(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime);
    List<ReconcileTradeDto> findJdChanneRefundTradeErrorAmount(@Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime);
}

